/*
有n个整数，使前面各数顺序向后移动k个位置。
移出的数再从开头移入。
输出移动后的数组元素。
*/
#include<stdio.h>
#include<stdlib.h>
void ringShift(int *a, int n, int k)
{
    int *b = (int *)malloc(n * sizeof(int));
    for(int i = 0; i < n; i ++)
    {
        if(i + k < n)
        {
            *(b + k + i) = *(a + i);
        }
        else
            *(b + i + k - n) = *(a + i);
    }
    for(int i = 0; i < n - 1; i ++)
    {
        printf("%d ", *(b + i));
    }
    printf("%d\n", *(b + n - 1));
    
}
int main()
{
    int n, k;
    scanf("%d", &n);
    int *a = (int *)malloc(n * sizeof(int));
    for(int i = 0; i < n; i ++)
    {
        scanf("%d ", a + i);//注意格式
    }
    scanf("%d", &k);
    ringShift(a, n, k);
    return 0;
}
//malloc是一个用于动态内存分配的函数
//int *arr = (int *)malloc(4 * sizeof(int));分配4个整数大小的内存空间